Diakritika v interbasi

Otázka od: Petr Matejcek

26. 10. 2003 16:07

zdravim

    mam tabulku v interbasi kde v jednom sloupci je prijmeni osoby
pokud ale potrebuju seradit osoby dle abecedy order by prijmeni tak to
seradi tak ze nejprve posklada prijmeni zacinajici A-Z (bez diakritiky)
a teprve na konci uvede vsechna prijmeni zacinajici na pismena s hackem
S,C,R,Z,

mate nekdo tip jak to nastavit aby to seradilo dobre?

diky Petr





----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)

Odpovedá: Jaroslav Uher

26. 10. 2003 17:02

On 26 Oct 2003 at 15:44, Petr Matejcek wrote:

> mam tabulku v interbasi kde v jednom sloupci je prijmeni osoby
> pokud ale potrebuju seradit osoby dle abecedy order by prijmeni tak to
> seradi tak ze nejprve posklada prijmeni zacinajici A-Z (bez diakritiky)
> a teprve na konci uvede vsechna prijmeni zacinajici na pismena s hackem
> S,C,R,Z,
>
> mate nekdo tip jak to nastavit aby to seradilo dobre?

predpokladam, ze pole mas mas definovane tak nejak:
PRIJMENI VARCHAR(25) CHARACTER SET WIN1250,
JMENO VARCHAR(25) CHARACTER SET WIN1250,
TITUL VARCHAR(9) CHARACTER SET WIN1250,

a potom v selelctu staci
    OrderByPrijm = 'ORDER BY PRIJMENI COLLATE PXW_CSY, '+
                               'JMENO COLLATE PXW_CSY, '+
                               'TITUL COLLATE PXW_CSY';


Jarek U.




----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)

Odpovedá: Petr Matejcek

26. 10. 2003 17:13

aha tak to nemam definoval jsem jen

PRIJMENI CHAR(25)

muzete mi pls nejak poradit jestli jde zmenit struktura tabulky na
PRIJMENI VARCHAR(25) CHARACTER SET WIN1250,
aniz bych prisel o data ktere v ni mam ?

diky

predpokladam, ze pole mas mas definovane tak nejak:

>PRIJMENI VARCHAR(25) CHARACTER SET WIN1250,
>JMENO VARCHAR(25) CHARACTER SET WIN1250,
>TITUL VARCHAR(9) CHARACTER SET WIN1250,
>
>a potom v selelctu staci
> OrderByPrijm = 'ORDER BY PRIJMENI COLLATE PXW_CSY, '+
> 'JMENO COLLATE PXW_CSY, '+
> 'TITUL COLLATE PXW_CSY';
>
>
>Jarek U.
>
>
>
>
>
>






----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)

Odpovedá: Jaroslav Uher

26. 10. 2003 18:23

On 26 Oct 2003 at 17:04, Petr Matejcek wrote:

> aha tak to nemam definoval jsem jen
>
> PRIJMENI CHAR(25)
>
> muzete mi pls nejak poradit jestli jde zmenit struktura tabulky na
> PRIJMENI VARCHAR(25) CHARACTER SET WIN1250,
> aniz bych prisel o data ktere v ni mam ?

podle knihy Interbase/Firebird od Pavla Cisare (vrele Ti doporucuji
jeji koupi), by to melo jit, viz "Zmena sloupcu tabulky" str. 196-197

ALTER TABLE TVOJE_TABULKA ALTER PRIJMENI TYPE
VARCHAR(25) CHARACTER SET WIN1250;

Ale nezkousel jsem to.
A rozhodne bych predtim databazi zalohoval !

Koukni se jeste v IBExpertu jaky mas vlastne charset toho sloupce.

Jarek U.

> predpokladam, ze pole mas mas definovane tak nejak:
>
> >PRIJMENI VARCHAR(25) CHARACTER SET WIN1250,
> >JMENO VARCHAR(25) CHARACTER SET WIN1250,
> >TITUL VARCHAR(9) CHARACTER SET WIN1250,
> >
> >a potom v selelctu staci
> > OrderByPrijm = 'ORDER BY PRIJMENI COLLATE
PXW_CSY, '+
> > 'JMENO COLLATE PXW_CSY, '+
> > 'TITUL COLLATE PXW_CSY';






----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)

Odpovedá: Petr Matejcek

26. 10. 2003 19:04

tu knihu si rad koupim kde se da objednat?

jeste jsem narazil na problem : kdyz mam sloupec PRIJMENI VARCHAR(25)
CHARACTER SET WIN1250
a chci provest INSERT INTO TABULKA (JMENO, PRIJMENI, ...) VALUES
('jmeno','prijmeni', ...)
tak to haze chybu : aritmetic exception , numeric overflow or string
truncation, Cannot transliterate character between character sets.

poradite pls kde delam chybu ?

>podle knihy Interbase/Firebird od Pavla Cisare (vrele Ti doporucuji
>jeji koupi), by to melo jit, viz "Zmena sloupcu tabulky" str. 196-197
>
>ALTER TABLE TVOJE_TABULKA ALTER PRIJMENI TYPE
>VARCHAR(25) CHARACTER SET WIN1250;
>
>
>






----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)

Odpovedá: Petr Vones

26. 10. 2003 19:08

From: "Petr Matejcek" <konference@crhov.komfi.cz>
> tu knihu si rad koupim kde se da objednat?

Maji ji v kazdem dobrem knihkupectvi. Pres Internet pak urcite na vltava.cz

Petr Vones




----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)

Odpovedá: Jaroslav Uher

26. 10. 2003 20:48

On 26 Oct 2003 at 18:56, Petr Matejcek wrote:

> jeste jsem narazil na problem : kdyz mam sloupec PRIJMENI
VARCHAR(25)
> CHARACTER SET WIN1250
> a chci provest INSERT INTO TABULKA (JMENO, PRIJMENI,
...) VALUES
> ('jmeno','prijmeni', ...)

1. jak mas definovan sloupec JMENO ?
2. pokud bez CHARACTER SET WIN1250 a chces tam 'cpat'
ceske nazvy jmen s diakritikou, tak je to jasne
3. pouzivas to v Delphi kodu nebo scriptu SP ? Je v tom velky
rozdil, v Delphi musis uvozovky zdvojovat nebo pouzit hotovou
funkci QuotedStr.

> tak to haze chybu : aritmetic exception , numeric overflow or
string
> truncation, Cannot transliterate character between character
sets.
>
> poradite pls kde delam chybu ?

Ja na vetsinu Insert/Update/Delete operaci nad tabulkou pouzivam
STORE PROCEDURES a komponenty TIBStoredProc s
parametry. S tim jsou nejmensi problemy.

Jarek U.





----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)

Odpovedá: Petr Matejcek

26. 10. 2003 20:50

sloupec jmeno je definovan s CHARACTER SET WIN1250 a insert zapisuju
primo z kodu delphi
      s:='insert into ltable (jmeno) values ('''+EditJmeno.Text+''' )';
na zdvojovani uvozovek jsem nezapomnel

chybu to hazi pouze pokud v promenne EditJmeno.Text je diakritika pokud
tam neni tak to normalne do databaze ulozi

co je zajimave tak kdyz byl sloupec jmeno definovan jen jako char(12)
tak to vlozilo jmeno s diakritikou bez problemu ale neumelo to podle nej
seradit

umi nekdo poradit? diky Petr

>1. jak mas definovan sloupec JMENO ?
>2. pokud bez CHARACTER SET WIN1250 a chces tam 'cpat'
>ceske nazvy jmen s diakritikou, tak je to jasne
>3. pouzivas to v Delphi kodu nebo scriptu SP ? Je v tom velky
>rozdil, v Delphi musis uvozovky zdvojovat nebo pouzit hotovou
>funkci QuotedStr.
>
>
>
>Ja na vetsinu Insert/Update/Delete operaci nad tabulkou pouzivam
>STORE PROCEDURES a komponenty TIBStoredProc s
>parametry. S tim jsou nejmensi problemy.
>
>Jarek U.
>
>
>
>
>
>
>






----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)

Odpovedá: Martin Burle

26. 10. 2003 21:03

> truncation, Cannot transliterate character between character sets.

..tak nad tim jsem tuhle taky badal - nejspis jsi podobne jako ja zapomel
nastavit db na WIN 1250 (dvojklik na komponente IBdatabase).

HTH,

MB





----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)

Odpovedá: Petr Matejcek

26. 10. 2003 22:37

tak jsem vsechny sloupce nastavil jako VARCHAR(20 ) CHARACTER SET WIN1250
DB jsem take nastavil na WIN 1250 a vkladani retezcu s diakritikou uz
funguje
jenze kdyz pak dam SELECT * FROM TABLE ORDER BY JMENO tak to stejne
neseradi podle ceske abecedy ale jmena zacinajici na `, C(, R(, }, jsou
na konci az za Z

Vite nekdo pls jak na to ?

>>truncation, Cannot transliterate character between character sets.
>>
>>
>
>..tak nad tim jsem tuhle taky badal - nejspis jsi podobne jako ja zapomel
>nastavit db na WIN 1250 (dvojklik na komponente IBdatabase).
>
>HTH,
>
>MB
>
>
>
>
>
>
>






----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)

Odpovedá: js-delphi@quick.cz

27. 10. 2003 6:25

Od: Petr Matejcek <konference@crhov.komfi.cz>

> tak jsem vsechny sloupce nastavil jako
> VARCHAR(20 ) CHARACTER SET WIN1250
> DB jsem take nastavil na WIN 1250 a vkladani
> retezcu s diakritikou uz
> funguje
> jenze kdyz pak dam SELECT * FROM TABLE ORDER
> BY JMENO tak to stejne
> neseradi podle ceske abecedy ale jmena
> zacinajici na `, C(, R(, }, jsou
> na konci az za Z

Ahoj!
No ja osobne delam jeste to, ze typu sloupce nastavim COLLATE PXW_CSY, coz
zpusobi spravne serazeni podel cestiny. Ted nevim, jestli s timhle nebyl nejaky
problem pri alter sloupce - tusim ze to na alter nereagovalo a tak jsem musel
vytvorit jiny sloupec s pozadovanym typem, presypat do nej hodnoty, smazat
puvodni sloupec a pak ten novy prejmenovat na ten puvodni.
Pokud nemas v tabulce zadny data, je lepsi tabulku dropnout a vytvorit spravne
znovu (kdyz si pres Consoli vytahnes Metadata k tabulce, mas to hotovy jedna-
dve) s pozadovanyma typama
Spravne by v tabulce melo byt:
TITUL VARCHAR(9) CHARACTER SET WIN1250 COLLATE PXW_CSY
Ahoj
Jirka
--------------------------------------------------
Ing. Jiri Sokol; jiri.sokol@seznam.cz; 972 231 187
D6Prof+SP2; WinXPProf+SP1
programator amater





----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)

Odpovedá: Lebeda David

27. 10. 2003 6:23

> tak jsem vsechny sloupce nastavil jako VARCHAR(20 ) CHARACTER SET
> WIN1250 DB jsem take nastavil na WIN 1250 a vkladani retezcu s
> diakritikou uz funguje jenze kdyz pak dam SELECT * FROM TABLE ORDER BY
> JMENO tak to stejne neseradi podle ceske abecedy ale jmena zacinajici
> na `, C(, R(, }, jsou na konci az za Z
>

Ahoj,

pokusim se to vsechno shrnout. Jde o nekolik ruznych veci:

1) Charset - je vhodne nastavit na WIN1250 - ale pozor - dela se to jak v
databazi,
tak i v pripojeni. To uz tu bylo psano. Obecne lze mit v databazi jiny charset
nez v
pripojeni a Firebird pak sam provadi konverzi znaku - jedine, kdy to nefunguje,
je,
kdyz v nekterem z obou pripadu char neni uveden vubec, coz byl asi puvodne tvuj

pripad.

2) Setrideni se neovlada charsetem. Je urceno pomoci COLLATION. Jiz v definici
sloupcu typu CHAR, VARCHAR se da uvest - jako se uvadi CHARACTER SET
(ktery je ale nejjednodussi nastavit na urovni cele databazi a pak uz se o nej
nestarat), muzes v definici uvest i COLLATE PXW_CSY, coz urcuje zpusob trideni.

Pokud trideni nemas uvedene jiz v definici sloupce, muzes je specifikovat primo
v
order by casti dotazu, jak uz tu nekdo psal. Vice viz dokumentace.

David Lebeda




----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)